package com.aizuda.boot.modules.business.performancePlan.service;

import com.aizuda.boot.modules.business.performancePlan.dto.CreatePaymentPlanDTO;
import com.aizuda.boot.modules.business.performancePlan.dto.PaymentPlanGroupResponseDTO;
import com.aizuda.boot.modules.business.performancePlan.entity.PaymentPlanEntity;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * 付款计划 Service 接口
 */
public interface PaymentPlanService extends IService<PaymentPlanEntity> {

    /**
     * 根据合同ID查询付款计划列表
     *
     * @param contractId 合同ID
     * @return 付款计划列表
     */
    List<PaymentPlanEntity> getByContractId(Integer contractId);

    /**
     * 根据合同ID删除付款计划
     *
     * @param contractId 合同ID
     * @return 是否删除成功
     */
    boolean deleteByContractId(Integer contractId);

    /**
     * 根据计划组ID查询付款计划列表
     *
     * @param planGroupId 计划组ID
     * @return 付款计划列表
     */
    List<PaymentPlanEntity> getByPlanGroupId(Integer planGroupId);



    /**
     * 更新付款计划
     *
     * @param paymentPlan 付款计划
     * @return 是否更新成功
     */
    boolean updatePaymentPlan(PaymentPlanEntity paymentPlan);

    /**
     * 创建付款计划
     *
     * @param createPaymentPlanDTO 创建付款计划请求
     * @return 是否创建成功
     */
    boolean createPaymentPlan(CreatePaymentPlanDTO createPaymentPlanDTO);

    /**
     * 获取付款计划详情（按计划组分类）
     *
     * @param contractId 合同ID
     * @return 付款计划详情列表
     */
    List<PaymentPlanGroupResponseDTO> getPaymentPlanDetail(Integer contractId);
}
